package com.yyl.common.util;

import com.yyl.common.constant.Inter.CommonConstant;
import com.yyl.common.util.oss.OssBootUtil;
import org.jeecgframework.poi.util.PoiPublicUtil;
import org.springframework.util.FileCopyUtils;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;

// 文件上传工具累
public class CommonUtils {
	public static String uploadOnlineImage(byte[] data,String basePath,String bizPath,String uploadType){
		String dbPath=null;
		String fileName="image"+Math.round(Math.random() * 100000000000L);
		fileName+="." + PoiPublicUtil.getFileExtendName(data);
		try{
			if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){
				File file=new File(basePath+File.separator+bizPath+File.separator);
				if(!file.exists()){
					file.mkdirs();// 创建文件跟目录
				}
				String savePath=file.getPath() + File.separator + fileName;
				File savefile=new File(savePath);
				FileCopyUtils.copy(data,savefile);
				dbPath =bizPath+File.separator+fileName;
			}else {
				InputStream in=new ByteArrayInputStream(data);
				String relativePath=bizPath+"/"+fileName;
				if (CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
					dbPath=MinioUtil.upload(in,relativePath);
				}else if(CommonConstant.UPLOAD_TYPE_OSS.equals(uploadType)){
					dbPath= OssBootUtil.upload(in,relativePath);
				}
			}
		}catch (Exception e){
			e.printStackTrace();
		}
		return dbPath;
	}
	//判断文件名是否带盘符，重新处理
	public static String getFileName(String fileName){
		//判断是否带有盘符信息
		// Check for Unix-style path
		int unixSep = fileName.lastIndexOf('/');
		// Check for Windows-style path
		int winSep = fileName.lastIndexOf('\\');
		// Cut off at latest possible point
		int pos = (Math.max(winSep, unixSep));
		if (pos != -1) {
			// Any sort of path separator found...
			fileName = fileName.substring(pos + 1);
		}
		//替换上传文件名字的特殊字符
		fileName = fileName.replace("=", "").replace(",", "").replace("&", "");
		return fileName;
	}
}
